diff options
| author | Brendan Allan <[email protected]> | 2025-12-18 01:59:23 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-18 01:59:23 +0800 |
| commit | 2a3a8a1ec2d71ae27730226cfac37830c7a5dfd7 (patch) | |
| tree | 79728cd1d3ae8cf926df9fd7bae1326a8a1b6112 /packages/console/app/src/routes/download/[platform].ts | |
| parent | 69e562125d26b246f0374fad2de7d0d34092100c (diff) | |
| download | opencode-2a3a8a1ec2d71ae27730226cfac37830c7a5dfd7.tar.gz opencode-2a3a8a1ec2d71ae27730226cfac37830c7a5dfd7.zip | |
console: use download proxy to rename mac and windows installers (#5697)
Co-authored-by: GitHub Action <[email protected]>
Diffstat (limited to 'packages/console/app/src/routes/download/[platform].ts')
| -rw-r--r-- | packages/console/app/src/routes/download/[platform].ts | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/packages/console/app/src/routes/download/[platform].ts b/packages/console/app/src/routes/download/[platform].ts index 94e3957c6..486b6bf6c 100644 --- a/packages/console/app/src/routes/download/[platform].ts +++ b/packages/console/app/src/routes/download/[platform].ts @@ -1,20 +1,37 @@ import { APIEvent } from "@solidjs/start" +import { DownloadPlatform } from "./types" const assetNames: Record<string, string> = { "darwin-aarch64-dmg": "opencode-desktop-darwin-aarch64.dmg", + "darwin-x64-dmg": "opencode-desktop-darwin-x64.dmg", "windows-x64-nsis": "opencode-desktop-windows-x64.exe", "linux-x64-deb": "opencode-desktop-linux-amd64.deb", "linux-x64-rpm": "opencode-desktop-linux-x86_64.rpm", -} +} satisfies Record<DownloadPlatform, string> + +// Doing this on the server lets us preserve the original name for platforms we don't care to rename for +const downloadNames: Record<string, string> = { + "darwin-aarch64-dmg": "OpenCode Desktop.dmg", + "darwin-x64-dmg": "OpenCode Desktop.dmg", + "windows-x64-nsis": "OpenCode Desktop Installer.exe", +} satisfies { [K in DownloadPlatform]?: string } export async function GET({ params: { platform } }: APIEvent) { const assetName = assetNames[platform] if (!assetName) return new Response("Not Found", { status: 404 }) - return await fetch(`https://github.com/sst/opencode/releases/latest/download/${assetName}`, { + const resp = await fetch(`https://github.com/sst/opencode/releases/latest/download/${assetName}`, { cf: { + // in case gh releases has rate limits cacheTtl: 60 * 60 * 24, cacheEverything: true, }, } as any) + + const downloadName = downloadNames[platform] + + const headers = new Headers(resp.headers) + if (downloadName) headers.set("content-disposition", `attachment; filename="${downloadName}"`) + + return new Response(resp.body, { ...resp, headers }) } |
